package com.my.controller;


import com.alibaba.fastjson.JSONObject;
import com.my.bean.Production;
import com.my.bean.ResultPage;
import com.my.bean.User;
import com.my.bean.VoPage;
import com.my.service.ProductionService;
import com.my.util.SessionUtil;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * <p>
 * 产康可预约 前端控制器
 * </p>
 *
 * @author 冯政尚
 * @since 2018-08-25
 */
@Controller
@RequestMapping("/production")
public class ProductionController {

    //依赖注入
    @Autowired
	ProductionService productionService;
    //创建日志对象
    Logger logger = Logger.getLogger(ProductionController.class);

    /**
     * 跳转到预约产康预约页面
     * @return 产康预约页面
     */
    @RequestMapping("/orderHandling")
    public String OrderHandling(){
        return "Order_handling";
    }


    /**
     * 添加产康项目
     * @param
     * @return 添加产康项目
     */
    @RequestMapping("/insertProduction")
    @ResponseBody
    public boolean insertProduction(String param,HttpSession session){
        Production production = JSONObject.parseObject(param, Production.class);
		long areaid= ((User)session.getAttribute("user")).getAreaId();
		production.setAreaid(areaid);
        boolean flag = productionService.insert(production);
        String msg = flag?"添加成功"+production:"添加失败";
        logger.info(msg);
        return flag;

    }



    /**
     * 查询所有产康项目  如果有状态参数 则条件查询
     * @param stat  状态
     * @param voPage 分页
     * @return 项目信息
     */
    @RequestMapping("/selectProduction")
    @ResponseBody
    public ResultPage<Production> selectProduction(String lin, String data, String stat, VoPage voPage, HttpSession session) {
        boolean admin=false;
        //如果事超级管理员  即可查看所有的房间  判断是否为超级管理员
        if(SessionUtil.getSessionUser(session).getRoles().getRoleValue().equals("9f77d5a8-75c6-4d06-adf9-a37e727d491a")){
            admin=true;
        }
        Map map = new HashMap();
        map.put("lin",lin);
        map.put("data",data);
       long areaid= ((User)session.getAttribute("user")).getAreaId();
        ResultPage<Production> list = productionService.selectMyPage(map,stat,voPage,areaid,admin);
        return list;
    }


    /**
     * 修改 可预约变成不可预约
     * @param id
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public String update(Long id){
        logger.info("修改");
        return productionService.updateProductionState(id);

    }


    /**
     * 修改 不可预约变成可预约
     * @param id 根据id来修改
     * @return 修改信息
     */
    @RequestMapping("/update2")
    @ResponseBody
    public String update2(Long id){
        logger.info("不可预约变成可预约");
        return productionService.updateProductionState2(id);
    }


    /**
     * 根据状态id查询
     * @param id  id
     * @return 根据id查询
     */
    @RequestMapping("/selectById")
    @ResponseBody
    public List<Production> selectById(Long id){
        List<Production> list = productionService.selectByAppointmentId(id);
        return list;
    }


    /**
     * 根据房间的id查询那个房间有那些项目 （内部）
     * @param homeId 房间id
     * @param voPage 分页查询
     * @return 返回根据房间id发呢也拆线呢出来的信息
     */
    @RequestMapping("/findProjectByHomeId")
    @ResponseBody
    public ResultPage<Production> findProjectByHomeId(Long homeId, VoPage voPage, @RequestParam(value = "flag",required = false) String flag, HttpSession session){
        boolean admin=false;
        //如果事超级管理员  即可查看所有的房间  判断是否为超级管理员
        if(SessionUtil.getSessionUser(session).getRoles().getRoleValue().equals("9f77d5a8-75c6-4d06-adf9-a37e727d491a")){
            admin=true;
        }
        ResultPage<Production> list = new ResultPage<>();
        long areaid= ((User)session.getAttribute("user")).getAreaId();
        if(flag!=null){
            System.out.println("查询所有");
            //查询所有
            list =productionService.findProjectByHomeId(voPage,areaid,admin);
        }else{
            list =productionService.findProjectByHomeId(homeId,voPage,areaid,admin);
        }
        logger.info("list:"+list);
        return list;
    }


    //返回添加页面
    /*@RequestMapping("/Ordermanagement_add")
    public String Ordermanagement_add(){
        return "Ordermanagement_add";
    }*/

    /**
     * 返回产康项目添加页面
     * @return
     */
    @RequestMapping("/producion_add")
    public String producionAdd(){
        return "/Alert/producion_add";
    }


    /**
     * 返回产康项目编辑页面
     * @return
     */
    @RequestMapping("/producion_edit")
    public String prouductionEdit(){
        return "/Alert/producion_edit";
    }


    /**
     * 修改产康项目
     * @param param
     * @return
     */
    @RequestMapping("/updateProuduction")
    @ResponseBody
    public String updateProuduction(String param){
        Production production  = JSONObject.parseObject(param,Production.class);
        if(productionService.updateById(production)){
             logger.info("修改产康项目成功");
                return "修改成功";
        }else{
            logger.info("修改产康项目失败");
            return "修改失败";
        }
    }


    /**
     * 删除产康项目
     * @param id
     * @return
     */
    @RequestMapping("/deleteProducion")
    @ResponseBody
    public boolean deleteProducion(Long id){
        return productionService.deleteById(id);
    }




}
